﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 练习_冒泡排序
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int[] arr = {5, 1, 3, 2, 10, 6};

            BubbleSort(arr);

            foreach (int v in arr)
            {
                Console.WriteLine(v);
            }
            Console.Read();
        }
        public static void BubbleSort(int[] arr)
        {
            //检查每一轮冒泡，如果出现一次交换动作都没有的话，说明已经是有序序列了
            bool changed = false;

            for (int i = 0; i < arr.Length - 1; i++)
            {
                //每一轮冒泡操作
                for (int j = 0; j < arr.Length - 1 - i; j++)
                {
                    if (arr[j] > arr[j + 1])
                    {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;

                        changed = true;
                    }
                }
                //做完了对剩余子序列的遍历调整后，检查是否有过序列调整
                if (changed)
                {
                    changed = false;
                }
                else
                {
                    //changed为false，说明一次交换都没有做，当前序列已经完全有序了
                    break;
                }
            }
        }
    }
}
